/**
 * Universidad del Valle de Guatemala
 * Algoritmos y Estructuras de Datos
 * Sección: 20
 * @author Rodrigo Avelar, carné: 11192
 * Descripción: Interfaz genérica de una pila
 */
public interface Stack <E> {
    
   /**
    * push:void
    * pre:
    * post: se añade a la pila el item 
    * @param item E de tipo de dato genérico
    */
   public void push(E item);
   
   /**
    * pop:E
    * pre: la pila no esta vacia
    * post: Será retira el ultimo elemento que se habia introducido a la pila
    * @return tipo de dato genérico
    */   
   public E pop();
   
   /**
    * peek:E
    * pre: la pila no esta vacia
    * post: El último valor en la pila es retornado
    * @return tipo de dato genérico 
    */
   public E peek();
   
   /**
    * empty:boolean
    * pre:
    * post: retorna true si y solo si la pila esta vacia
    * @return true si la pila esta vacia o false si hay algun dato
    */
   public boolean empty();
   
   /**
    * size:int
    * pre:
    * post: retorna el numero de elementos que hay en la pila
    * @return numero de elementos que hay en la pila
    */
   public int size();
    
}
